/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.discount.service.manager;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.medusa.gruul.discount.api.entity.FullScale;
import com.baomidou.mybatisplus.extension.service.IService;
import com.medusa.gruul.discount.api.model.dto.manager.FullScaleDto;
import com.medusa.gruul.discount.api.model.param.manager.FullScaleParam;
import com.medusa.gruul.discount.api.model.vo.manager.FullScaleSimpleVo;
import com.medusa.gruul.discount.api.model.vo.manager.FullScaleVo;

import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 满减活动 服务类
 * </p>
 *
 * @author lcysike
 * @since 2019-12-09
 */
public interface IFullScaleService extends IService<FullScale> {

    /**
     * 查询列表
     *
     * @param fullScaleParam
     * @return 分页对象
     */
    IPage<FullScaleVo> getFullScaleList(FullScaleParam fullScaleParam);

    /**
     * 查询单张满减活动信息
     *
     * @param id
     * @return FullScaleSimpleVo
     */
    FullScaleSimpleVo getSimpleFullScale(Long id);

    /**
     * 查询单张满减活动信息接口
     *
     * @param id
     * @return FullScaleVo
     */
    FullScaleVo getFullScaleById(Long id);

    /**
     * 满减活动新增
     *
     * @param fullScaleDto
     */
    void addFullScale(FullScaleDto fullScaleDto);

    /**
     * 满减活动修改
     *
     * @param fullScaleDto
     */
    void updateFullScale(FullScaleDto fullScaleDto);

    /**
     * 关闭/启用满减活动
     *
     * @param ids
     * @param status
     */
    void changeFullScaleStatus(Long[] ids, Integer status);

    /**
     * 满减活动删除
     *
     * @param ids
     */
    void deleteFullScaleList(Long[] ids);

    /**
     * 查询客户可使用满减活动
     *
     * @param productIds
     * @return List<FullScaleVo>
     */
    List<FullScaleVo> findFullScaleListForOrder(Collection<Long> productIds);

    /**
     * 定时任务查询可未开始与进行中的满减活动
     *
     * @return List<FullScaleVo>
     */
    List<FullScaleVo> findFullScaleListForTask();

    /**
     * 定时任务查更新满减活动状态
     *
     * @param fullScaleVo
     */
    void updateFullScaleForTask(FullScaleVo fullScaleVo);

    /**
     * 查询单个商品可使用满减信息
     *
     * @param productId
     * @return List<FullScaleVo>
     */
    List<FullScaleVo> findFullScaleListForProduct(Long productId);
}
